package com.itany.corejava.code08_常用类.包装类;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月14日 10:40
 */
public class Test01_定义方式 {
    public static void main(String[] args) {

        //定义方式一:通过构造方法定义
        byte b=1;
        Byte b1=new Byte(b);
        Byte b2=new Byte("1");
        System.out.println(b1);
        System.out.println(b2);

        // 定义方式二:
        Byte b3=Byte.valueOf(b);
        Byte b4=Byte.valueOf("1");
        System.out.println(b3);
        System.out.println(b4);

        //当传递的字符串格式不正确，无法转换为对应的类型的时候会抛出异常
        // Byte b5=new Byte("aaa");//java.lang.NumberFormatException

        //当传递的字符串格式没问题，但是超出范围
        // Byte b5=new Byte("1000");//java.lang.NumberFormatException
        //Short、Integer、Long用法与byte一致

        // 对于布尔类型，传递的布尔值为false，结果就是false
        Boolean flag=new Boolean(false);
        System.out.println(flag);

        // 对于布尔类型，传递的字符串为true，结果就是true
        Boolean flag2=new Boolean("true");
        System.out.println(flag2);

        // new Float(float|double|string)
        Float f=new Float(5.23F);
        Float f2=new Float(7.89);
        Float f3=new Float("123.45");
        System.out.println(f);
        System.out.println(f2);
        System.out.println(f3);

        // Double(double|string)
        Double d1=new Double(3.56);
        Double d2=new Double("23.78");

        //Double的构造方法中没有参数float，但是当填入float，在运算的时候自动转换为double
        Double d3=new Double(89.1f);
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(d3);

        // 对于Character类型，构造方法中只能是char类型，不能是String
        Character c=new Character('A');

        Integer i1=Integer.valueOf(100);
        Integer i2=Integer.valueOf("100");
        System.out.println(i1==i2);

        Integer i3=Integer.valueOf(1000);
        Integer i4=Integer.valueOf("1000");
        System.out.println(i3==i4);

        // 查看源码:范围[-128,127]
        // 此时并没有创建新的对象，而是从缓存中取出来
        // 如果超出范围，才会创建新的对象



        System.out.println(i3.equals(i4));

        // 包装类具有面向对象的特征，可以调用Object方法
        System.out.println(i3.getClass());
        System.out.println(i3.hashCode());
        System.out.println(i4.getClass());
        System.out.println(i4.hashCode());




    }
}
